package com.mapper;

import com.dto.OrdersMO;
import com.dto.ReportForm;
import com.entity.OrderDetail;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.entity.Orders;
import com.vo.StorageReportVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;

/**
 * <p>
 *  入库订单详情Mapper 接口
 * </p>
 *
 * @author aiou
 * @since 2025-06-10
 */
@Mapper
public interface OrderDetailMapper{

    /**
     * 新增订单详情
     * @param orderDetail
     * @return
     */
    int insert(OrderDetail orderDetail);

    /**
     * 批量删除订单详情
     * @param ordersMO
     * @return
     */
    int batchDelete(OrdersMO ordersMO);

    /**
     * 检查订单批次号是否存在
     * @param batchArray
     * @return
     */
    List<OrderDetail> checkBatchNo(String[] batchArray);

    /**
     * 获取订单详情
     * @param orderNo
     * @return
     */
    List<OrderDetail> list(String orderNo);

    /**
     * 删除订单详情
     * @param orderNo
     * @return
     */
    int delete(String orderNo);

    /**
     * 采购退货单：退货明细下拉框
     * @return
     */
    List<OrderDetail> orderDetailList();

    /**
     * 根据退货批次号，查询同批次号，状态为审核的订单的订单数量
     * @param batchNo
     * @param orderType
     * @return
     */
    BigDecimal getOrderCount(String batchNo,Integer orderType);

    /**
     * 根据订货批次号和订单类型，更新对应被退货的订单的订单数量
     * @param count
     * @param batchNo
     * @param orderType
     * @return
     */
    int updateOrderCount(BigDecimal count, String batchNo, int orderType);

    /**
     * 销售退货单：获取下拉框数据
     * @return
     */
    List<OrderDetail> saleReturnOrdersDetailList();

    /**
     * 仓库统计：分页查询
     * @param form
     * @return
     */
    List<StorageReportVO> storageReportVOList(@Param("form") ReportForm form);

    /**
     * 仓库统计：Excel导出查询
     * @return
     */
    List<StorageReportVO> storageReportVOExportList();
}
